CloudFrontで S3のコンテンツを配布する
Amazon CloudFrontについて
Amazon CloudFrontはコンテンツ配信ネットワーク(CDN)サービスです。コンテンツが分散してエッジにキャッシュされるため、読み取りパフォーマンスが向上します。CloudFrontはDDoS保護を提供し、ShieldとAWS Web application firewallと統合できます。データとアプリケーションとAPIを高速かつ低遅延でグローバルに配信します。
CloudFront Origins
S3 Bucket
CloudFrontは、S3のコンテンツをグローバルに配信して、エッジロケーションにキャッシュするために使用されます。S3でCloudFrontを使用 すると、S3バケットのレイテンシーとロードが軽減されます。CloudFrontは Origin Access Identity(OAI)でセキュリティを強化します。 OAIにより、S3バケットはCloudFrontを介したコミュニケーションのみを許可できます。CloudFrontを使用して、ファイルをS3にアップロードすることもできます。
カスタムオリジン(HTTP endpoint )
カスタムオリジンは、HTTPエンドポイントである必要があります。カスタムオリジンには、Application Load Balancer、EC2インスタンス、Static S3ウェブサイト、または任意のHTTPバックエンドを使用できます。下の図は、EC2とALBをオリジンとするCloudFrontを表しています。
CloudFront キャッシング
キャッシングはエッジロケーションで行われます。キャッシングは、ヘッダーバリュー、セッションクッキー、またはクエリストリングパラメータに 基づいて行うことができます。TTLとヘッダーを使用してキャッシュヒットレートを最大化することで、オリジンへのリクエスト数を最小化できます。 Static Distributionとdynamic distribution を分けることで、キャッシュヒットを最大化することができます。ダイナミックキャッシングでは、 ヘッダーとセッションキャッシングのルールを使用しますが、スタティックキャッシングでは、静的なコンテンツをキャッシングするためのルール は必要ありません。
OAIを使用したS3のCloudFront Distributionの作成
1. デフォルト設定で一意の名前を付けてS3バケットを作成して、ファイルをバケットにアップロードします。このS3バケットにIndex.html ファイルをアップロードしました。バケット内のファイルは公開されません。
2. CloudFront Distributionの作成
- CloudFront Consoleを開いて、[CreateDistribution]をクリックしてください。
- S3バケットをオリジンドメインとして選択してください。
- S3バケットアクセスに「yes use OAI」を選択して、『create new OAI』をクリックしてください。
- Bucket policy updateには『yes』と選択してください。
- 『Create Distribution 』をクリックしてください。
3. OAIを使用してCloudFrontを作成すると、S3バケットポリシーが自動的に作成されます。このポリシーにより、S3バケットはクラウドフロント を介したコミュニケーションのみを許可できます。
4. CloudFront DistributionのDomain nameとS3のファイル名を使用して、S3のファイルをアクセスすることができます。
Domain-name-of-the-cloudfront-distribution/file-name
まとめ
CloudFrontとS3での実装について見てきました。CloudFrontは、edge locationsのコンテンツの配信とキャッシュのための重要なサービスです。CloudFrontはセキュリティ保護を提供し、コンテンツを高速に配信します。CloudFrontには多くの機能があり、便利なサービスと なっています。